#pragma once

#ifndef WIN32
# define MXSTDMETHOD
#else
# define MXSTDMETHOD __stdcall
#endif

class IMxPluginBaseIID
{
	public:
		static const char *const GUID()
		{
			return "3727FEA8-BE15-4976-841A-6735A0DC219B";
		}

		static const char *const Name()
		{
			return "IMxPluginBase";
		}

		static const int IIdSize = 36;
};

class IMxPluginBase {
	public:
		virtual long MXSTDMETHOD DestroyPtr(void) = 0;
		virtual long MXSTDMETHOD DuplicatePtr(void) = 0;
		virtual void *MXSTDMETHOD Dynamic_cast(const char *Iid) = 0;
		virtual const char *MXSTDMETHOD GetInterfaceGUID(void) = 0;
		virtual const char *MXSTDMETHOD GetInterfaceName(void) = 0;
};
